#include <iostream>
#include <vector>
#include <algorithm>
using std::vector;
using std::cout;


int main1(){
    int n; std::cin >> n;
    vector<int> arr(n+1);
    for(int i = 1; i <= n; i++) std::cin >> arr[i];

    int ret = 0;
    for(int i = 1; i <= n; i++){
        for(int j = i + 1; j <= n; j++){
            if(std::min(arr[i],arr[j]) == i && std::max(arr[i],arr[j]) == j) ret++;
        }
    }
    cout << ret << std::endl;
    return 0;
}

// #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define endl '\n'
ll tmod=998244353;
ll mod=1e9+7;
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pb push_back
#define vi vector<int>
#define vll vector<ll>
#define fi first
#define se second
#include <ctime>

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;cin>>n;
    vll a(n+1);
    vector<bool>vis(n+1);
    ll ans=0;
    ll sum=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(a[i]==i){
            ans+=sum;
            sum++;
        }
    }
    for(int i=1;i<=n;i++){
        if(a[i]!=i&&a[i]<=n){
            if(a[a[i]]==i&&vis[a[i]]==false){
                ans++;
                vis[a[i]]=true;
                vis[i]=true;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}


// int main(){
//     int n; std::cin >> n;
//     vector<int> arr(n+1);
//     for(int i = 1; i <= n; i++) std::cin >> arr[i];

//     vector<int> surfix(n+2,0);
//     for(int i = n; i >= 1; --i){
//         surfix[i] = surfix[i+1] + (arr[i] <= i ? 1 : 0);
//     }
//     int ret = 0;
//     for(int i = 1; i <= n; ++i){
//         if(arr[i] == i) ret += surfix[i + 1];
//     }
//     cout << ret << std::endl;
//     return 0;
// }

// using namespace std;

// int main(){
//     ios::sync_with_stdio(false);
//     cin.tie(nullptr);

//     int n; 
//     cin >> n;
//     vector<long long> a(n+1);
//     for(int i = 1; i <= n; i++) cin >> a[i];

//     // 后缀和，统计 [i..n] 中有多少 j 满足 a[j] <= j
//     vector<int> suffix(n+2,0);
//     for(int i = n; i >= 1; --i){
//         suffix[i] = suffix[i+1] + (a[i] <= i ? 1 : 0);
//     }

//     long long ans = 0;
//     for(int i = 1; i <= n; ++i){
//         if(a[i] == i){
//             ans += suffix[i+1]; 
//         }
//     }

//     cout << ans << "\n";
//     return 0;
// }

// //     int cnt = 0;
// //     for(int i = 1; i <= n; ++i){
// //         if(arr[i] == i) cnt++;
// //     }
// //     return (cnt * (cnt - 1)) / 2;
// // }